package com.yilin.tms.order.service.payment;

import com.yilin.tms.core.application.PageData;
import com.yilin.tms.core.entity.capital.TradeRecord;
import com.yilin.tms.core.entity.order.goods.GoodsOrder;
import com.yilin.tms.core.entity.order.payment.OrderPaymentCost;
import com.yilin.tms.core.entity.order.payment.OrderRefundCost;
import com.yilin.tms.core.entity.order.rob.RobOrder;
import com.yilin.tms.core.entity.order.transit.TransitOrder;
import com.yilin.tms.core.entity.user.account.Account;

import java.util.List;

public interface IOrderRefundCostService {


    void updateOrderRefundResult(Account loginUser, TradeRecord tradeRecord);

    void generateGoodsOrderRefund(GoodsOrder goodsOrder);

    void generateRobOrderRefund(RobOrder robOrder, GoodsOrder goodsOrder);

    void generateTransitOrderRefund(TransitOrder transitOrder, RobOrder robOrder, GoodsOrder goodsOrder);

    OrderRefundCost generateOrderRefund(OrderPaymentCost originalOrderPaymentCost, OrderRefundCost preOrderRefundCost);

    void lockOrderRefund(Account loginUser, String formRefundId, boolean locking);

    void updateOrderRefund(Account loginUser, OrderRefundCost formRefund);

    void sureOrderRefund(Account loginUser, OrderRefundCost formRefund);

    List<OrderRefundCost> getOrderRefundCostListByPaymentId(String paymentId);

    List<OrderRefundCost> getOrderRefundListByIds(List<String> orderRefundCostIds);

    OrderRefundCost getOrderRefundById(String orderRefundCostId);

    PageData<OrderRefundCost> getOrderRefundPage(OrderRefundCost query, Account loginUser, Integer page, Integer limit);



}
